/* node 事件环 */

/* 
1. 新版本 node 和浏览器执行顺序一致
2. node 中创建多个宏任务
timers: 所有定时器都放在其中
pending callback: 上一轮没有执行完的任务， 不可管理，辞退内部使用
idle , prepare  : 调度，不可管理，系统内部使用

poll： 轮询，
check： 

timer队列， setTimeout
poll： i/o 回调
check: setImmediate, 优先级比timer 高，先还行
*/


    // 清空 nextTick ---> 清空微任务queueMicrotask, promise.then ---> 进入 timers---> 进入 i/o ---> 进入 check 


// 配置webpack删除无用的css样式的时候  除了插件{PurgeCssPlugin}  目前还有使用别的吗

// 浏览器只有一个队列， node 有多个



// 本轮任务结束后立即执行
process.nextTick(() => {
    
})


// 常用模块
/* 
1. 内置模块
2. 文件模块，代码中的，相对路径来使用
3. 第三方模块，别人写好的, 如 npm 中的

*/

// fs 
false.existsSunc('xxx')

// path ，
// resolve 遇到 / 表示是回到根目录, 其他时候用 join 或者 resolve 都可以
path.baseNmae('a.js', '.js')  // 得到 a
path.extNmae('a.js')  // 得到  .js
path.relative('a/b/c', 'c')  // 取相对路径 ..\..\..\c
path.dirname(__filename)  // 得到 __dirname

//  vm 模块  让字符串 运行，类似于 eval 和 new Function， 但是eval 和 new Function都会污染全局， 不安全
//  vm 是一个沙箱执行，实现一个全新的上下文
// js 中如何实现沙箱运行? 快照和 proxy 